package se.wangs.state;

import java.util.Objects;

/**
 * 1) 该实体类中有一个表示当前货物状态的成员属性
 *      1.1) 提供状态设置
 *      1.2) 提供状态获取
 * 2)
 */
public class JdLogistics {
    private LogisticsState logisticsState;

    public void setLogisticsState(LogisticsState logisticsState) {
        this.logisticsState = logisticsState;
    }

    public LogisticsState getLogisticsState() {
        return logisticsState;
    }

    /**
     * 该方法用于改变货物的状态信息，一般无参，方法名与状态中的方法名保持一致
     */
    public void doAction() {
        Objects.requireNonNull(logisticsState);
        // 调用方法，将this参数传递进去，表示上下文信息
        logisticsState.doAction(this);
    }
}